home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
et
/
et3_0-a1.lha
/
et3
/
src
/
VObjectText.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-08-26
|
3KB
|
110 lines
#ifndef VObjectText_First
#ifdef __GNUG__
//pragma once
#pragma interface
#endif
#define VObjectText_First
#include "StyledText.h"
#include "Mark.h"
const cMarkChar = '#'; // character to mark a VisualMark
//------ VObjectMark -----------------------------------------------------------
class VObjectMark: public VisualMark {
class VObject *vop;
public:
MetaDef(VObjectMark);
VObjectMark(VObject *vo= 0);
~VObjectMark();
VObject *GetVObject();
void CalcExtent();
Point GetExtent();
int Base();
void SetContainer(class VObject*);
void Draw(Point at, Rectangle clip, Rectangle line, bool border);
void SendDown(int, int, void *);
bool WantsInput(Point p);
virtual class Command *Input(Point lp, Token &t, class Clipper *cl);
void FreeAll();
OStream& PrintOn(OStream&);
IStream& ReadFrom(IStream&);
void CollectParts(Collection *col);
};
//------ VObjectText -----------------------------------------------------------
class MarkList;
class TextView;
class VObjectText: public StyledText {
MarkList *visualMarks;
TextView *tv;
void Init();
protected:
void ReplaceRange(int from, int to, Text *src, int sfrom, int sto);
public:
MetaDef(VObjectText);
VObjectText();
VObjectText(int size, Font *fd= gSysFont, TxtParaAlign= eTxtParaLeft);
VObjectText(byte *buf, int len= -1, Font *fd= gSysFont, TxtParaAlign= eTxtParaLeft);
~VObjectText();
void InitNew();
//---editing
void SetCharStyle(TxtCharProp m, int f, int t, const CharStyleSpec &st);
void ReplaceCharStyles(RunArray *styles, int from, int to);
//---- VObject embedding
VisualMark *GetVisualMarkAt(int at);
byte GetMarkChar();
void PasteVisualMark(VisualMark *vmp, int from, int to);
void PasteVObject(VObject *vop, int from, int to);
//VObject *ContainsPoint(Point p);
VObject *VObjectAt(int charNo);
MarkList *GetVisualMarks();
int FindPositionOfVObject(VObject *); // -1 VObject not found
TextView *GetTextView();
void SetView(class TextView*);
bool IsMarkChar(int charNo);
bool IsVisualMark(int charNo);
void VObjectChangedSize(VObject *);
Iterator *VisualMarksIterator();
int VisualMarksCount();
//---- activation/passivation
OStream& PrintOn(OStream&);
IStream& ReadFrom(IStream&);
void CollectParts(Collection *c);
void ClassInvariant();
};
inline bool VObjectText::IsMarkChar(int charNo)
{
return (*this)[charNo] == cMarkChar;
}
inline bool VObjectText::IsVisualMark(int charNo)
{
return (IsMarkChar(charNo) && GetVisualMarkAt(charNo));
}
//---- VObjectMark --------------------------------------------------
inline VObject* VObjectMark::GetVObject()
{
return vop;
}
#endif